package testes;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import iscte.es.copaPaises.businessLayer.Cartao;
import iscte.es.copaPaises.businessLayer.Membro;
import iscte.es.copaPaises.businessLayer.TipoCartao;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class CartaoTest {
	
	private Cartao c;
	private int minuto;
	private TipoCartao tipo;
	private Membro membro;
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
		c=new Cartao();
		minuto=2;
		membro=new Membro();
		tipo=TipoCartao.valueOf("Amarelo");
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void testCartao() {
		assertTrue("Cartao()",Cartao.allInstances.contains(c));
	}

	@Test
	public void testCartaoIntTipoCartaoMembro() {
		c=new Cartao( minuto,  tipo, membro);
		assertTrue("Cartao( minuto,  tipo, membro)",Cartao.allInstances.contains(c));
	}

	@Test
	public void testMinuto() {
		c.setMinuto(minuto);
		assertEquals("Setter/Getter Cartao.minuto()",c.minuto(),minuto);
	}
		
	@Test
	public void testTipo() {
		c.setTipo(tipo);
		assertEquals("Setter/Getter Cartao.tipo()",c.tipo(),tipo);
	}

	@Test
	public void testMembro() {
		c.setMembro(membro);
		assertEquals("Setter/Getter Cartao.membro()",c.membro(),membro);
	}


	@Test
	public void testInicializa() {
		c.inicializa(tipo,minuto,membro);	
		assertEquals("Cartao.inicializa()",c.tipo(),tipo);
		assertEquals("Cartao.inicializa()",c.minuto(),minuto);
		assertEquals("Cartao.inicializa()",c.membro(),membro);
		//Tests second card
		Cartao c2=new Cartao();
		c2.inicializa(tipo, minuto, membro);
		assertEquals("Cartao.inicializa()",c2.tipo(),TipoCartao.Vermelho);
		assertEquals("Cartao.inicializa()",c2.minuto(),minuto);
		assertEquals("Cartao.inicializa()",c2.membro(),membro);
		
	}

	@Test
	public void testToString() {
		c=new Cartao( minuto,  tipo, membro);
		assertEquals("Cartao.toString()",c.toString(),"Cartao [minuto=" + minuto + ", tipo=" + tipo + ", membro=" + membro + "]\n");
	}

}
